.TH ELF_END 3 2025-03-31 "Libelf" "Libelf Programmer's Manual"

.SH NAME
elf_end \- Release resources associated with an ELF descriptor.

.SH SYNOPSIS
.nf
#include <libelf.h>

.BI "int elf_end(Elf *" elf ");"

.SH DESCRIPTION
The
.B elf_end
function releases resources associated with an ELF descriptor previously
returned by
.BR elf_begin .
It decrements the ELF descriptor’s internal reference count by one. When
this count reaches zero, the resources associated with the descriptor are
freed and the descriptor is invalidated.  If
.I elf
is not an archive member with ELF kind
.BR ELF_K_AR ,
the internal reference count is increased by one each time
.I elf
is passed to
.B elf_begin
as the
.I ref
argument.

An ELF descriptor whose reference count reaches zero is invalidated.
Further operations on the descriptor will result in undefined behavior.

.SH PARAMETERS
.TP
.I elf
The ELF descriptor (may be NULL).

.SH RETURN VALUE
Return the ELF descriptor's current internal reference count after
decrementing. A return value of zero indicates the ELF descriptor is now
invalidated.  If
.I elf
is NULL, then
.B elf_end
also returns 0.

.SH SEE ALSO
.BR elf_begin (3),
.BR libelf (3),
.BR elf (5)

.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.na
.nh
.BR elf_end ()
T}	Thread safety	MT-Safe
.TE

.SH REPORTING BUGS
Report bugs to <elfutils-devel@sourceware.org> or https://sourceware.org/bugzilla/.

